package com.lyy.server;

import com.lyy.entity.OrderMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.ConsumeMode;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
 * @author Liangyaoyun
 */
@Slf4j
@Component
@RocketMQMessageListener(
        // 消费者组名
        consumerGroup = "alibaba-sms-consumer-group",
        // 监听的主题名
        topic = "sms-topic",
        // 监听的标签名，默认为 `*` 表示监听全部标签
        selectorExpression = "sms-tag",
        // 并发模式CONCURRENTLY: 同组消费者并发消费消息，默认值
        // 顺序模式ORDERLY: 同组消费者按顺序依次消费消息
        consumeMode = ConsumeMode.CONCURRENTLY,
        // 集群模式CLUSTERING: 同组消费者平均分摊消费消息，每人只需消费部分消息，默认值
        // 广播模式BROADCASTING: 同组消费者每人都要将全部消息消费一遍
        messageModel = MessageModel.CLUSTERING)
public class SmsServer implements RocketMQListener<OrderMessage> {


    @Override
    public void onMessage(OrderMessage orderMessage) {
        String msgTemplate =
                String.format("用户 [%s] 您好，您的订单 [%s] 已经创建成功，共 [%s] 元，请在30分钟内付款。",
                        orderMessage.getUsername(),
                        orderMessage.getSn(),
                        orderMessage.getTotalFee());

        // 模拟发送短信
        log.info("向 {} 发送短信: {}", orderMessage.getPhone(), msgTemplate);
    }
}
